// pages/my_need_to/index.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 审批人openid
        openid: '',

        // 审批人相关信息
        user_data: '',

        // apply数据--等待审批的申请
        apply_data_for_loading: [],

        // apply数据--已经完成审批的申请
        apply_data_for_end: [],
        wait: '',
        used:'',
        cc: "",
        
        showView: true,
        btn_select: true,
        director_list: '',
        name: '',

        old_date_used: ''
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

        // 获取openID
        this.data.openid = getApp().globalData.openid;
        const db = wx.cloud.database();
        // 获取用户信息
        db.collection('user').get({openid: this.data.openid}).then(res =>{
            this.setData({
                user_data: res.data[0]
            })
        });
        // 调用applys数据获取函数
        this.getApplyData()
        
    },
    // 获取applys数据并将其分配给两个apply_data

    getApplyData(){
        const db = wx.cloud.database();
        // 查询申请单并按照时间排序
        const _ = db.command;
        db.collection('applys').orderBy('create_time', 'asc').get({approver:this.data.user_data.name}).then(res =>{
            console.log(res)
            for(i = 0;i < res.data.length;i++){
                let res_data = res.data[i];
                // 0未审批   1，2审批结束
                // 通过循环判断来对已审批数据与未审批数据进行分流， 分离到两个列表中存储起来
                if(res_data.state == 0){
                    this.setData({
                        apply_data_for_loading: this.data.apply_data_for_loading.concat(res_data)
                    })
                }else{
                    this.setData({
                        apply_data_for_end: this.data.apply_data_for_end.concat(res_data)
                    })
                }
                // 如果该申请的结束时间的时间戳比当前的时间戳小， 且该申请没有提交过处理单，则创建一个新的单子
                if(res.data[i].eq_name != '' && res.data[i].stop_time.getTime() < new Date().getTime()){
                    // 满足条件则该申请已过期,同时该申请对象为设备类型
                    db.collection('to_do_list').where({
                        eq_id: res.data[i].eq_id,
                        state: 0
                    }).get().then(res => {
                        // 如果未查询到该设备处于待办状态
                        if(res.length==0){
                            db.collection("to_do_list").add({
                                data: {
                                    "applicant": res.data[i].applicant,
                                    "director": res.data[i].director,
                                    "eq_id": res.data[i].eq_id,
                                    "state": 0
                                },
                                success: res => {
                                    console.log("待办事项已提交")
                                } 
                            })
                        }
                    })
                }
            }
        })
    },
    switchToLoading() {
        // 等待审批
        console.log('等待审批')
        this.setData({
            'showView': true,
            'btn_select': true
        })
    },
    switchToEnd() {
        console.log('审批完成')
        this.setData({
            'showView': false,
            'btn_select': false
        })

    },
    getDirector(director_id) {
        const db = wx.cloud.database();
        // 查询申请单并按照时间排序
        const _ = db.command;
        db.collection('user').doc(director_id).get().then(res =>{
            console.log(res.data)
            this.setData({

                name: res.data.name
            })
            console.log(this.data.name)
        })
    },
    noUpdate() {
        wx.wx.showToast({
            title: '不可修改',
            icon: 'error'
        })
    },
    
    goToPage1(e) {
        // 退回申请，将state修改为2
        let id = e.currentTarget.dataset.page[0];
        let field_id = e.currentTarget.dataset.page[1];
        let eq_id = e.currentTarget.dataset.page[2];
        const db = wx.cloud.database();
        const _ = db.command;

        console.log(id,field_id,eq_id)
        db.collection('fields').doc(field_id).get().then(res =>{
            this.setData({
                wait:res.data.wait
            })
        })
        if(eq_id == ""){
            // 判断为场地类申请
            db.collection('fields').doc(field_id).update({
                data:{
                    wait: this.data.wait - 1
                }
            }).then(res =>{
                console.log(res)
            })
        }
        db.collection('applys').doc(id).update({
            data:{
                state:2
            }
        }).then(res =>{
            console.log(res)
        })

        this.onLoad()

    },
    goToPage2(e) {
        // 通过申请，将state修改为1
        let id = e.currentTarget.dataset.page[0];
        let field_id = e.currentTarget.dataset.page[1];
        let eq_id = e.currentTarget.dataset.page[2];
        let start_date = e.currentTarget.dataset.page[3];
        let stop_date = e.currentTarget.dataset.page[4];
        let project = e.currentTarget.dataset.page[5];
        let applicant = e.currentTarget.dataset.page[6]
        let director = e.currentTarget.dataset.page[7]
        let result = this.create_date_list(start_date,stop_date)
        // let old_result = 
        console.log("完全体列表为:", result)
        const db = wx.cloud.database();
        const _ = db.command;
        db.collection('fields').doc(field_id).get().then(res=>{
            this.setData({
                old_date_used: res.data.date_used
            })
        })



        if(eq_id == "" && field_id != ""){
            // 判断为场地类申请

            db.collection('fields').doc(field_id).get().then(res =>{
                this.setData({
                    wait:res.data.wait,
                    field_name:res.data.name,
                    cc: res.data.cc
                })
            })
            for(let k in result){
                if(this.data.old_date_used.indexOf(k) == -1){
                    this.data.old_date_used[k] = []
                }
                if(this.data.old_date_used.indexOf(k) != -1){
                    if(this.data.old_date_used[k].length == 10){return}
                    this.data.old_date_used[k].push([project,applicant])
                }
            }
            db.collection('fields').doc(field_id).update({
                data:{
                    wait: this.data.wait - 1,
                    used: this.data.used + 1,
                    date_used: this.data.old_date_used
                }
            }).then(res =>{
                console.log(res)
            })

            // 抄送给场地/设备的供第二管理员
            db.collection('cc_msg').doc(field_id).add({
                data: {
                    "cc_name": cc,
                    "eq": "",
                    "field": field_name,
                    "applicant": this.data.user_data.name,
                    "applicant_p": this.data.user_data.phone,
                    "director": director
                },
                success: res => {
                    console.log("已抄送至对应管理员")
                } 
            })
        }else if(eq_id != "" && field_id == ""){
            // 判断为设备类申请, 将设备状态修改为使用中

            db.collection('fields').doc(field_id).get().then(res =>{
                this.setData({
                    cc: res.data.cc,
                    eq_name: res.data.name
                })
            })
            for(let k in result){
                if(this.data.old_date_used.indexOf(k) == -1){
                    this.data.old_date_used[k] = []
                }
                if(this.data.old_date_used.indexOf(k) != -1){
                    if(this.data.old_date_used[k].length == 10){return}
                    this.data.old_date_used[k].push([project,applicant])
                }
            }
            db.collection('equipments').doc(eq_id).update({
                data:{
                    state: 1,
                    date_used: this.data.old_date_used
                }
            }).then(res =>{
                console.log(res)
            })

            // 抄送给场地/设备的供第二管理员
            db.collection('cc_msg').doc(field_id).add({
                data: {
                    "cc_name": cc,
                    "eq": this.data.eq_name,
                    "field": "",
                    "applicant": this.data.user_data.name,
                    "applicant_p": this.data.user_data.phone,
                    "director": director
                },
                success: res => {
                    console.log("已抄送至对应管理员")
                } 
            })

        }
        db.collection('applys').doc(id).update({
            data:{
                state:1
            }
        }).then(res =>{
            console.log(res)
        })
        this.onLoad()
    },
    // 构建列表
  create_date_list(start, stop){

    let start_list = start.split('-');
    let end_list = stop.split('-');
    let result = [];
    let run_mont = start_list[0]%4
    while((start_list[0] + '-' + start_list[1] + '-' + start_list[2] + '-' + start_list[3])!=(end_list[0] + '-' + end_list[1] + '-' + end_list[2] + '-' + end_list[3])){
      start_list[3] = (parseInt(start_list[3]) + 1) > 8?parseInt(start_list[3]) + 1 + '':'0' + (parseInt(start_list[3]) + 1);
      if(start_list[3] == '24'){
        start_list[3] = '00'
        start_list[2] = (parseInt(start_list[2]) + 1) > 9?parseInt(start_list[2]) + 1 + '':'0' + (parseInt(start_list[2]) + 1);
        switch(start_list[1]){
          case '01':
          case '03':
          case '05':
          case '07':
          case '08':
          case '10':
            if(start_list[2] == '32'){
              start_list[2] = '01'
              start_list[1] = (parseInt(start_list[1]) + 1) > 9?parseInt(start_list[1]) + 1 + '':'0' + (parseInt(start_list[1]) + 1);
            }
            break;
          case '12':
            if(start_list[2] == '32'){
              start_list[2] = '01';
              start_list[1] = '01';
              start_list[0] = (parseInt(start_list[1]) + 1) > 9?parseInt(start_list[1]) + 1 + '':'0' + (parseInt(start_list[1]) + 1);
            }
            break;
          case '04':
          case '06':
          case '09':
          case '11':
            if(start_list[2] == '31'){
              start_list[2] = '01'
              start_list[1] = (parseInt(start_list[1]) + 1) > 9?parseInt(start_list[1]) + 1 + '':'0' + (parseInt(start_list[1]) + 1);
            }
            break;
          case '02':
            if(run_mont==0 && start_list[2] == '30'){
              start_list[2] = '01' 
              start_list[1] = (parseInt(start_list[1]) + 1) > 9?parseInt(start_list[1]) + 1 + '':'0' + (parseInt(start_list[1]) + 1);
            }else if(run_mont==0 && start_list[2] == '29'){
              start_list[2] = '01'
              start_list[1] = (parseInt(start_list[1]) + 1) > 9?parseInt(start_list[1]) + 1 + '':'0' + (parseInt(start_list[1]) + 1);
            }
            break;
        }
      }
      result.push(start_list[0] + '-' + start_list[1] + '-' + start_list[2] + '-' + start_list[3])

    }

    return result


  }
    // dateList(start, stop){
    //     let start_list = start.split('-')
    //     let year = parseInt(start_list[0])
    //     let month = parseInt(start_list[1])
    //     let day = parseInt(start_list[2])
    //     // let stop_list = int(stop.split('-'))
    //     // let stop_year = int(stop_list[0]);
    //     // let stop_month = int(stop_list[1]);
    //     // let stop_day = int(stop_list[2]);
    //     let start_num = new Date(start.replace(/-/g, '/'));
    //     let stop_num = new Date(stop.replace(/-/g, '/'));
    //     let days = parseInt((stop_num.getTime() - start_num.getTime()) / (1000 * 60 * 60 * 24))
    //     let result = []
    //     // console.log("天数为", days)
    //     for(let i =0;i<=days;i++){
    //         if(month in [1,3,5,7,8,10,12]){
    //             if(month < 10){
    //                 if(day <10){
    //                     // console.log(year + '-0' + month + '-0' + day)
    //                     result.push(year + '-0' + month + '-0' + day)
    //                 }else{
    //                     // console.log(year + '-0' + month + '-' + day)
    //                     result.push(year + '-0' + month + '-' + day)
    //                 }
    //             }
    //             if(month==12){
    //                 if(day==31){
    //                     month = 1
    //                     day = 1
    //                     year +=1
    //                 }else{
    //                     day += 1
    //                 }
    //             }else{
    //                 if(day==31){
    //                     month += 1
    //                     day = 1
    //                 }else{
    //                     day += 1
    //                 }
    //             }
    //         }else if(month in [4,6,9,11]){
    //             if(month < 10){
    //                 if(day <10){
    //                     // console.log(year + '-0' + month + '-0' + day)
    //                     result.push(year + '-0' + month + '-0' + day)
    //                 }else{
    //                     // console.log(year + '-0' + month + '-' + day)
    //                     result.push(year + '-0' + month + '-' + day)
    //                 }
    //             }
    //             if(day==30){
    //                 month += 1
    //                 day = 1
    //             }else{
    //                 day += 1
    //             }
    //         }else{
    //             if(month < 10){
    //                 if(day <10){
    //                     // console.log(year + '-0' + month + '-0' + day)
    //                     result.push(year + '-0' + month + '-0' + day)
    //                 }else{
    //                     // console.log(year + '-0' + month + '-' + day)
    //                     result.push(year + '-0' + month + '-' + day)
    //                 }
    //             }
    //             if(year%4 == 0){
    //                 if(day==29){
    //                     month += 1
    //                     day = 1
    //                 }else{
    //                     day += 1
    //                 }
    //             }else{
    //                 if(day==28){
    //                     month += 1
    //                     day = 1
    //                 }else{
    //                     day += 1
    //                 }
    //             }
    //         }
    //     }
    //     // console.log("完全体列表为:", result)
    //     return result
    // }

})